package com.shujia.flink.core.function;

import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.util.Collector;

/***
 * FlatMapFunction： 用于flatmap算子的参数，实现FlatMapFunction接口，再flatMap方法中对数据做处理
 *
 * Tuple2： flink提供的二元组，相当于scala中的元组
 */
public class Demo1WordCountFlatMap implements FlatMapFunction<String, Tuple2<String, Integer>> {

    /**
     * flatMap: 一条数据调用一次
     * @param line       : 一行数据
     * @param collector： 用于将数据发送到下游
     */
    @Override
    public void flatMap(String line, Collector<Tuple2<String, Integer>> collector) throws Exception {

        System.out.println("flatMap被调用");

        //将一行转换成多行，发送到下游
        String[] split = line.split(",");

        //循环将数据发送到下游
        for (String word : split) {
            //发送数据到下游
            collector.collect(Tuple2.of(word, 1));
        }
    }
}
